// 商品路由表

// 加载模块
let express = require('express');
let https = require('https');
let path  = require('path');
let goodsModel = require('../db/models/goodsModel.js');

// 创建路由表(空表)
let router = express.Router();

// 向路由表添加内容:

// 添加商品接口
router.post('/add',(req,res)=>{
    // 向goods添加数据
    // goodsModel.insertMany()
    res.send('add is ok');
});

// 删除商品接口
router.post('/del',(req,res)=>{
    res.send('del is ok');
});

// 代理请求接口
// 目标地址：https://m.you.163.com/xhr/index.json
router.get('/getdata',(req,res)=>{
    let url = 'https://m.you.163.com/xhr/index.json';
    let data = '';
    https.get(url,(response)=>{
        // 监听data事件
        response.on('data',(chunk)=>{
            // 接收到chunk数据片段时触发一次data事件
            // console.log( chunk );// <Buffer>数据片段
            // console.log( chunk+'' );// 字符串数据片段
            // console.log( '---------------------------------------------------------' );

            data += chunk;
        })
        // 监听end事件
        response.on('end',()=>{
            // 数据片段接收完成触发end事件

            // 响应请求
            res.send(data);
        })
    })
})

// jsonp接口
// http://localhost:9999/goods/jsonp
router.get('/jsonp',(req,res)=>{
    // res.send('alert(123)');
    res.send('let data = {a:123,b:456}');
});

// http://localhost:9999/goods/jsonp2
router.get('/jsonp2',(req,res)=>{
    // 接收参数
    let {user,pass,callback} = req.query;
    // console.log( user,pass );
    // console.log( callback );// 'hehe'  'test

    let data = JSON.stringify({user:user,pass:pass,arr:[1,2,3,4]});

    res.send(`${callback}(${data})`);
    // res.send("hehe({user:'xiaocuo',pass:'123123',arr:[1,2,3,4]})");
    // res.send("test({user:'xiaocuo',pass:'123123',arr:[1,2,3,4]})");
});


// 测试接口1
router.get('/test1',(req,res)=>{
    res.send({"name":"老王","age":35,"sex":"女"});
});

// 测试接口2
router.get('/test2',(req,res)=>{
    let {a,b} = req.query;
    res.send({"code":1,"data":[a,b]});
});

// 测试接口3
router.post('/test3',(req,res)=>{
    res.send({"name":"老王","age":35,"sex":"女"});
});

// 测试接口4
router.post('/test4',(req,res)=>{
    let {a,b} = req.body;
    res.send({"code":1,"data":[a,b]});
});


// 上传文件接口
// 使用multer插件来解析接收FormData数据
// 安装multer插件("multer": "^1.4.5-lts.1",)
// npm i multer
// 加载模块
let multer = require('multer');


/* // 生成一个upload接收器
// dest: '上传文件的存储目录'
let upload =  multer({dest: './www/uploads'});

// 接收单个文件
let fn = upload.single('filen');

router.post('/update',fn,(req,res)=>{
    // 接收文件之后，在req对象上有一个file属性(上传文件的相关信息)
    console.log( req.file );
    // req.file = {
    //     fieldname: 'filen',
    //     originalname: '02.jpg',
    //     encoding: '7bit',
    //     mimetype: 'image/jpeg',
    //     destination: './www/uploads',
    //     filename: '1cea890899dacbda3cca81eef51490ba',
    //     path: 'www\\uploads\\1cea890899dacbda3cca81eef51490ba',
    //     size: 50687
    // }
      
    // 其他数据
    console.log( req.body.user );// 'xiaocuo'

    res.send('update is ok');
}); */


// 生成upload接收器
let upload = multer({
    // dest: './www/uploads'
    limits: {
        // 限制上传文件最大为500kb（超出会报错）
        fileSize: 1024*500
    },
    fileFilter: function (req,file,cb){
        // req 请求对象
        // file 上传文件对象
        // cb 回调函数（设置接收或拒收文件）
        // file = {
        //     fieldname: 'filen',
        //     originalname: '03.png',
        //     encoding: '7bit',
        //     mimetype: 'image/png'
        // }
        // cb(null,true);// 接收文件
        // cb(null,false);// 拒收文件

        // 要求：只接收图片文件
        let reg = /\.(png|gif|jpe?g|svg)$/;
        if (reg.test(file.originalname)) {
            cb(null,true);// 接收文件
        } else {
            cb(null,false);// 拒收文件
        }
    },
    storage: multer.diskStorage({
        destination: function (req,file,cb){
            // req 请求对象
            // file 上传文件对象
            // cb 回调函数（设置上传文件存储目录）
            cb(null,'./www/uploads');
        },
        filename: function (req,file,cb){
            // req 请求对象
            // file 上传文件对象
            // cb 回调函数（设置上传文件的名称）
            // console.log( file );
            // file = {
            //     fieldname: 'filen',
            //     originalname: '03.png',
            //     encoding: '7bit',
            //     mimetype: 'image/png'
            // }
            // cb(null,'hehe.jpg');// 上传文件不能为固定名称，会覆盖

            let file_name = 'upload_'+Date.now()+'_'+parseInt(Math.random()*100000);
            let hzm = path.extname(file.originalname);// '.png'
            cb(null,file_name+hzm);
        }
    })
});

// 接收单个文件
let fn = upload.single('filen');

router.post('/update',(req,res)=>{
    fn(req,res,(err)=>{
        // 接收文件的进度完成后执行的回调函数
        // console.log( req.file );
        // req.file = {
        //     fieldname: 'filen',
        //     originalname: '03.png',
        //     encoding: '7bit',
        //     mimetype: 'image/png',
        //     destination: './www/uploads',
        //     filename: 'hehe.jpg',
        //     path: 'www\\uploads\\hehe.jpg',
        //     size: 262971
        // }

        // 如果没有错误err为null，有错误err为错误对象
        if (err) {
            // 上传文件超出最大范围会报错
            return res.send({"code":-1,"msg":"上传图片最大为500kb"});
        }
        if (!req.file) {
            // 拒收文件时，req.file的值为undefined
            return res.send({"code":-2,"msg":"只能上传图片文件"});
        }
        res.send({"code":1,"msg":"图片上传成功","imgurl":"http://localhost:9999/static/uploads/"+req.file.filename});
    });
})

// ...

// 导出路由表
module.exports = router;
